const log4js = require('log4js');
// 将自定义的日志级别与log4js模块中的相应级别进行映射
const levels = {
    trace: log4js.levels.TRACE,
    debug: log4js.levels.DEBUG,
    info: log4js.levels.INFO,
    warn: log4js.levels.WARN,
    error: log4js.levels.ERROR,
    fatal: log4js.levels.FATAL,
};
// 对log4js模块进行配置
log4js.configure({
    appenders: {
        // 控制台输出
        console: { type: 'console' },
        // 将info级别的日志输出到info-logs.log文件中
        info: {
            type: 'file',
            filename: 'logs/info-logs.log',
        },
        // 将error级别的日志输出到error-yyyy-MM-dd.log文件中
        error: {
            type: 'dateFile',
            filename: 'logs/error',
            pattern: 'yyyy-MM-dd.log',
            // 设置文件名称是filename + pattern
            alwaysIncludePattern: true,
        },
    },
    categories: {
        // default是默认的日志记录器，当没有指定日志记录器时，会使用default记录器
        default: { appenders: ['console'], level: 'debug' },
        // info是info级别的日志记录器，当指定日志记录器为info时，会使用info记录器
        info: { appenders: ['info', 'console'], level: 'info' },
        // error是error级别的日志记录器，当指定日志记录器为error时，会使用error记录器
        error: { appenders: ['error', 'console'], level: 'error' },
    },
});

// 导出的函数用于记录debug级别的日志
exports.debug = (content) => {
    // 获取log4js模块的logger对象
    let logger = log4js.getLogger('debug');
    // 设置logger对象的日志级别为debug
    logger.level = levels.debug;
    // 记录debug级别的日志
    logger.debug(content);
}

// 导出的函数用于记录info级别的日志
exports.info = (content) => {
    // 获取log4js模块的logger对象
    let logger = log4js.getLogger('info');
    // 设置logger对象的日志级别为info
    logger.level = levels.info;
    // 记录info级别的日志
    logger.info(content);
}

// 导出的函数用于记录warn级别的日志
exports.warn = (content) => {
    // 获取log4js模块的logger对象
    let logger = log4js.getLogger('warn');
    // 设置logger对象的日志级别为warn
    logger.level = levels.warn;
    // 记录warn级别的日志
    logger.warn(content);
}

// 导出的函数用于记录error级别的日志
exports.error = (content) => {
    // 获取log4js模块的logger对象
    let logger = log4js.getLogger('error');
    // 设置logger对象的日志级别为error
    logger.level = levels.error;
    // 记录error级别的日志
    logger.error(content);
}

